// LongPaperPrinter.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "LongPaperPrinter.h"
#include "LongPaperPrinterDlg.h"
#include <locale.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


bool IsOSVerWindowsVista()
{
	OSVERSIONINFOEX osver;
	ZeroMemory(&osver, sizeof(osver));
	osver.dwOSVersionInfoSize = sizeof(osver);

	if (!GetVersionEx((OSVERSIONINFO *)&osver))
		return false;

	// dwMajorVersion 6 and dwMinorVersion 0 means Vista or 2k8:
	if ( (osver.dwMajorVersion != 6) || (osver.dwMinorVersion != 0) )
		return false;

	// wProductType of NT_WORKSTATION means it's Vista:
	if (osver.wProductType != VER_NT_WORKSTATION)
		return false;

	return true;
}
// CLongPaperPrinterApp

BEGIN_MESSAGE_MAP(CLongPaperPrinterApp, CWinApp)
	ON_COMMAND(ID_HELP, OnHelp)
END_MESSAGE_MAP()


// CLongPaperPrinterApp construction

CLongPaperPrinterApp::CLongPaperPrinterApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}


// The one and only CLongPaperPrinterApp object

CLongPaperPrinterApp theApp;


// CLongPaperPrinterApp initialization

BOOL CLongPaperPrinterApp::InitInstance()
{
	// InitCommonControlsEx() is required on Windows XP if an application
	// manifest specifies use of ComCtl32.dll version 6 or later to enable
	// visual styles.  Otherwise, any window creation will fail.
	INITCOMMONCONTROLSEX InitCtrls;
	InitCtrls.dwSize = sizeof(InitCtrls);
	// Set this to include all the common control classes you want to use
	// in your application.
	InitCtrls.dwICC = ICC_WIN95_CLASSES;
	InitCommonControlsEx(&InitCtrls);

	CWinApp::InitInstance();

	AfxEnableControlContainer();

	// Standard initialization
	// If you are not using these features and wish to reduce the size
	// of your final executable, you should remove from the following
	// the specific initialization routines you do not need
	// Change the registry key under which our settings are stored
	// TODO: You should modify this string to be something appropriate
	// such as the name of your company or organization
	SetRegistryKey(_T("FlowerParter Inc"));
    CString strLang = GetProfileString(_T(""), _T("Language"), _T("en"));
	LANGID myLangId = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
	if (strLang.CompareNoCase(_T("zh_cn")) == 0)
	{
		myLangId = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED);
	}else if (strLang.CompareNoCase(_T("zh_tw")) == 0)
	{
		myLangId = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL);
	}else if (strLang.CollateNoCase(_T("kr")) == 0)
	{
		myLangId = MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN);
	}
	if (IsOSVerWindowsVista())
	{
		typedef LANGID (WINAPI *FP_SetThreadUILanguage)(LANGID LangId);
		HMODULE hKernel32 = GetModuleHandle(_T("Kernel32.dll"));
		FP_SetThreadUILanguage pSetThreadUILanguage = (FP_SetThreadUILanguage)GetProcAddress(hKernel32, "SetThreadUILanguage");
		pSetThreadUILanguage(myLangId);
	}else
	{
		SetThreadLocale(MAKELCID(myLangId, SORT_DEFAULT));
	}
	free((void*)m_pszAppName);
	m_pszAppName = NULL;

	CLongPaperPrinterDlg dlg;
	m_pMainWnd = &dlg;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with Cancel
	}

	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}
